package Mundo;

import Objetos.Arvore;
import Objetos.Entidade;

public class Mapa {
	private int mapaTotalX;
	private int mapaTotalY;
	private String mapaNome;
	private Mundo mapaMundo;
	private Entidade[][] mapaVectLocal;
	private Entidade entAntes = null; // para armazenar o que estava antes do objeto se mover 
	
	public Mapa(Mundo xMun){
		mapaTotalX = 100;
		mapaTotalY = 20;
		mapaNome = "Warrior Land";
		mapaMundo = xMun;
		mapaVectLocal = new Entidade[mapaTotalX][mapaTotalY];
		criaBordas();
	}
	
	public Entidade getItem(int posX, int posY){
		return mapaVectLocal[posX][posY];
	}

	public void setItem(Entidade obj, int posX, int posY){
		mapaVectLocal[posX][posY] = obj;
	}
	
	public void moveItem(Entidade obj, int paraPosX, int paraPosY){
		Entidade entParaVai = mapaVectLocal[paraPosX][paraPosY];
		mapaVectLocal[paraPosX][paraPosY] = mapaVectLocal[obj.getPosX()][obj.getPosY()];

		if (entAntes==null){
			mapaVectLocal[obj.getPosX()][obj.getPosY()] = null;
		} else {
			mapaVectLocal[obj.getPosX()][obj.getPosY()] = entAntes;
		}
		
		obj.setPosX(paraPosX);
		obj.setPosY(paraPosY);
		entAntes = entParaVai;
	}
	
	public Entidade getEntiSobreposto(){
		return entAntes;
	}
	
	public void removeSobreposto(){
		entAntes = null;
	}

	public int getMapaX(){
		return mapaTotalX;
	}
	public int getMapaY(){
		return mapaTotalY;
	}
	public String getMapaNome(){
		return mapaNome;
	}
	public String getMundoNome(){
		return mapaMundo.getMundoNome();
	}
	
	private void criaBordas(){
		for (int y=0; y<=this.getMapaY()-1; y++){
			for (int x=0; x<=this.getMapaX()-1; x++){
				if (y==0 || y==this.getMapaY()-1){new Arvore(this,x,y);} 
				else {if (x==0 || x==this.getMapaX()-1){new Arvore(this,x,y);}}
			}
		}		
	}
	
}
